package com.ctbu.score.mapper;

import com.ctbu.score.domain.Student;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * 学生数据访问接口
 **/
@Mapper
public interface StudentMapper {

    /**
     * 根据学号和密码查询学生信息
     *
     * @param stuId   学号
     * @param stuPass 密码
     * @return 匹配的学生对象
     */
    @Select("select * from student where  stu_id=#{stuId} and stu_pass=#{stuPass}")
    Student selectStudentByIdAndPass(@Param("stuId") String stuId, @Param("stuPass") String stuPass);

    /**
     * 查询所有学生信息
     *
     * @return 学生列表
     */
    @Select("select * from student")
    List<Student> selectAllStudent();

    /**
     * 插入学生信息（不含密码）
     *
     * @param stu 学生对象
     * @return 插入操作影响的行数
     */
    @Insert("insert into student (stu_id,stu_name,stu_class,stu_sex,stu_tele) values" +
            "(#{stuId},#{stuName},#{stuClass},#{stuSex},#{stuTele})")
    int insertStudent(Student stu);

    /**
     * 插入带密码的学生信息
     *
     * @param stu 学生对象
     * @return 插入操作影响的行数
     */
    @Insert("insert into student  values(#{stuId},#{stuName},#{stuPass},#{stuClass},#{stuSex},#{stuTele})")
    int insertStudentHavaPass(Student stu);

    /**
     * 根据学号查询学生信息
     *
     * @param stuId 学号
     * @return 对应的学生对象
     */
    @Select("select * from student where  stu_id=#{stuId} ")
    Student selectStudentByStuId(String stuId);

    /**
     * 根据学号删除学生信息
     *
     * @param StuId 学号
     * @return 删除操作影响的行数
     */
    @Delete("DELETE from student where stu_id=#{stuId}")
    int deleteStuById(String StuId);

    /**
     * 根据班级查询学生信息
     *
     * @param sutClass 班级名称
     * @return 对应班级的学生列表
     */
    @Select(value = "SELECT * from student where stu_class=#{sutClass}")
    List<Student> selectStuByStuclass(String sutClass);

    /**
     * 根据学号查询学生姓名
     *
     * @param stuId 学号
     * @return 学生姓名
     */
    @Select("select stu_name from student where stu_id=#{stuId} ")
    String selectNameById(String stuId);

    /**
     * 根据班级查询学生学号列表
     *
     * @param stuClass 班级名称
     * @return 学号列表
     */
    @Select("select stu_id from student where stu_class=#{stuClass}")
    List<String> selectIdByClass(String stuClass);
}

